x

Строки

Ссылочный тип
Содержит массив символов:

  • Если входят в LATIN-1, то byte
  • Если нет - char

Строки неизменяемые - любое изменение это новая строка
Хранятся в String Pool
Если такая же есть в String Pool - то новая не создается (интернирование строк)

Интернирование

String s1 = "Hello World";
String s2 = "Hello " + "World";
// s1 == s2 - на этапе создания компилятор все понял и не стал засорять стринг пул
String s3 = new String("Hello World"); // специально выделили место под новую строку
// s1 != s3
s3 = s3.intern();
// s1 == s3

При создании компилятор может додуматься не создавать одинаковые строки несколько раз, но если изменить динамически, то все меняется

String s4 = "Hello";
s4 += " World";
// s4 != s1, но s4.equals(s1) - true
s4 = s4.intern();
// s4 == s1

Конкатенация

Склеивание строк - +
Типы приводятся к строке

"Hello" + " " + "world" // Hello world
"Hello" + 5 + 10 // Hello510
"Hello" + (5 + 10) // Hello15
5 + 10 + "Hello" + 5 + 10 // 15Hello510

StringBuilder

Хранит массив char и позволяет легко менять строку, пример паттерна Builder

StringBuilder sb = new StringBuilder("Hello");
sb.append("!");
String res = sb.toString();
// полезные методы reverse(), append(), insert(index, arg), delete(start, end), deleteCharAt(index), 

Полезные методы:

  • reverse() - разворачивает цепочку
  • append(arg) - добавляет в конец
  • insert(index, arg) - добавляет по указанному индексу
  • delete(start, end) - удаляет от start до end, end не включительно
  • deleteCharAt(index) - удаляет символ на индексе
  • replace(start, end, str) - заменяет
  • charAt(index) - символ по индексу
  • setCharAt(index, ch) - заменяет по указанному индексу
  • substring(start, end) - возвращает подстроку
  • length() - возвращает длину
  • setLength(newLength) - обрезает или дополняет символы

Полезные методы строк

  • charAt(index) - символ на определенном индексе
  • toCharArray() - получить массив символов
  • new String(char[] arr) - можно создать из массива символов
  • substring(start, end) - подстрока [start,end)
  • length() - длина
  • split(str) - сплит по строке
  • String.join(delimiter, elements) - соединение массива по символу

Дополнительн: Character

Left-click: follow link, Right-click: select node, Scroll: zoom
x